package com.gitee.W_Jun;

/**
 * @author https://gitee.com/W_Jun
 * @date 2021-12-23 18:06
 * @Description 方法的结束方式分为两种：
 *      一种是正常的函数返回，使用return指令；另外一种是抛出异常（指未处理的异常）。
 *      不管使用哪种方式，都会导致栈帧被弹出。
 *      反编译发现，如果返回值是int类型，就用ireturn指令。如果没有返回值是return指令。
 */
public class StackFrameTest2 {
    public static void main(String[] args) {
        try {
            StackFrameTest2 test = new StackFrameTest2();
            test.method1();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("main()正常结束");
    }
    public void method1() {
        System.out.println("method1()开始执行...");
        method2();
        System.out.println("method1()执行结束...");
        System.out.println(10 / 0);
    }

    public int method2() {
        System.out.println("method2()开始执行...");
        int i = 10;
        int m =(int) method3();
        System.out.println("method2()即将结束...");
        return i+m;
    }

    public double method3() {
        System.out.println("method3()开始执行...");
        double j = 20.0;
        System.out.println("method3()即将结束...");
        return j;
    }
}